package com.csea;

/**
 * @author Csea
 * @title
 * @date 2019/12/11 20:57
 */
public class App2 {
    String s1 = "全局变量";

    public void testInnerClass() {
        String s2 = "局部变量";

        new Thread(new Runnable() {
            String s3 = "内部变量";

            @Override
            public void run() {
                System.out.println(s1);
                System.out.println(s2);//不能对局部变量进行修改（final）
                System.out.println(s3);
                System.out.println(this.s3);
            }
        }).start();
    }

    public void lambdatest() {
        String s2 = "局部lambda";
        new Thread(() -> {
            String s3 = "内部lambda";

            System.out.println(this.s1); //this关键词，表示的是所属方法所在的对象
            System.out.println(s2);//不能对局部变量进行修改（final）
            System.out.println(s3);
        }).start();
    }

    public static void main(String[] args) {
        App2 app2 = new App2();
        app2.testInnerClass();

        app2.lambdatest();

        // lambda变量的访问操作优化了匿名类内部的this关键字，不再单独建立对象作用域
        // 表达式本身就是所属类型对象的一部分，在语法语义上更加简洁
    }
}
